/**
 * 
 */
package servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import metier.Bean;
import metier.Sondage;

/**
 * @author hozakan
 * Permet d'obtenir le dernier Sondage en cours pour l'afficher sur la page d'accueil (ou toute
 * autre page contenant le module de sondage).
 * 
 * Il s'agit pour l'instant d'un bouchon qui crée le sondage lui-même.
 * 
 *\/!\Ce servlet est utilisé lors des appels Ajax correspondants. Elle ne renvoie donc pas de page mais un String
 * via le printer. 
 */
public class GetLastPoll extends BaseServlet {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 2184081673277466236L;
	private static final Logger logger = Logger.getLogger(GetLastPoll.class);

	/* (non-Javadoc)
	 * @see servlets.BaseServlet#specificDoGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void specificDoGet(HttpServletRequest request, HttpServletResponse response) {
		if(logger.isDebugEnabled()) {
			logger.debug("Récupération du dernier sondage");
		}
		Bean sondage = tampon();
		if(logger.isDebugEnabled()) {
			logger.debug("Récupération du dernier sondage");
		}
		String html = toStringFlow(sondage);
		sendText(response, html);
	}

	/**
	 * Transforme 
	 * @param sondage
	 * @return
	 */
	private String toStringFlow(Bean sondage) {
		StringBuffer sb = new StringBuffer(); //Utilisation d'un StringBuffer lputôt qu'un StringBuilder car le Servlet peut être appelé plusieurs fois en même temps.
		//sb.append("<form name=\"sondageForm\" id=\"sondageForm\" action=\"#\">");
		//sb.append("<input type=\"hidden\" name=\"pollId\" value="+((Sondage)sondage).getTitle()+"\" />");
		sb.append("--Q--");
		sb.append(((Sondage)sondage).getTitle());
		sb.append("--ID--");
		sb.append(sondage.getId());
		for (String str : ((Sondage)sondage).getPossibleResponses()) {
			//sb.append("<input type=\"radio\" name=\"response\" value=\""+str+"\"");
			sb.append("--R--");
			sb.append(str);
		}
		//sb.append("</form>");
		sb.append("--END--");
		return sb.toString();
	}
	
	protected void sendText(HttpServletResponse response, String text) {
	    response.setContentType("text/html");
	    response.setCharacterEncoding("UTF-8");
	    ServletOutputStream out;
		try {
			out = response.getOutputStream();
		    out.print(text);
		    out.flush();
		    out.close();
			System.out.println("texte envoyé");
		} catch (IOException e) {
			System.out.println("Erreur d'envoi");
			logger.error("Erreur d'e/s lors de la transmission du message");
		}
	  }

	/**
	 * Méthode tampon de création d'un sondage.
	 * @return un sondage oO
	 */
	private Bean tampon() {
		Bean sondage = new Sondage();
		((Sondage)sondage).setId(1);
		((Sondage)sondage).setTitle("Qu'en pensez-vous ?");
		List<String> list = new ArrayList<String>();
		list.add("C'est bien!");
		list.add("ça vaut le coup d'oeil");
		list.add("Mais c'est quoi ça?!");
		list.add("La réponse D");
		((Sondage)sondage).setPossibleResponses(list);
		return sondage;
	}

	@Override
	protected void specificDoPost(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub
		
	}

}
